Skip to content

Conversation

@SegiH
Copy link

@SegiH SegiH commented Jan 12, 2026

This PR fixes #17190

After enabling another VPN app in Android, you cannot enable the Tailscale radio toggle until you force stop it. The radio button will not enter the enabled state.

Steps to recreate this issue:

  1. Enable Tailscale in Android app via radio toggle or Connect button.
  2. Enable another VPN.
  3. Return to Tailscale Android app and try to enable via radio toggle or Connect button. The radio toggle does not enter the enabled state. The Tailscale Quick Connect tile experiences this symptom as well.

When tracing this issue, I found that at step 3, a break point at this point shows that the value of currentState is Ipn.State.Stopping not Ipn.State.Stopped as you might expect. When you enable Tailscale initially in step 1, currentState is Ipn.State.Stopped.

Enabling/Disabling Tailscale is done in 2 places in the Android app and this PR is to fix this issue in 2 places:

  1. After this line:

I check if the value of currentState is Ipn.State.Stopping and if it is, call stopVPN().

  1. Tailscale can be enabled or disabled via the Tailscale tile. In QuickToggleService, the value of isRunning is set to true but is never set to false. As a result, before calling app.startVPN(), I added a call to app.stopVPN() to fix this issue since isRunning is not a reliable state to check the current status of Tailscale to determine if it is running.

I also added a note to the README that its required to run make libtailscale to make the Tailscale AAR necessary to build the Android Tailscale app.

SegiH added 2 commits January 11, 2026 14:33
…ing another VPN until Tailscale app is force closed because currentState=Ipn.State.Stopping on subsequent attempts to start TS
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant